.. _cmsSxVMoveStart: cmsSxVMoveStart ================================ -------------------------------- SYNOPSYS ````````````` .. code-block:: none VT_I4 cmsSxVMoveStart ([in] VT_I4 BoardId, [in] VT_I4 Axis, [in] VT_I4 Dir) DESCRIPTION ````````````` - 작업속도까지 가속한 후에 작업속도를 유지하며 정지(停止)함수가 호출될 때까지 지정한 방향으로의 모션을 계속 수행합니다. 이 함수는 모션을 시작시킨 후에 바로 반환됩니다. \ - 이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의 첨두어 cms 가 붙지 않습니다. PARAMETER ````````````` ▶ BoardId: 사용자가 설정한 디바이스(보드) ID. ▶ Axis: 축(채널) 번호. 축번호는 상수값으로 0 번째 채널을 기준 채널로 임의의 채널을 설정할 수 있습니다. ▶ Dir : 모션의 방향을 설정합니다. .. csv-table:: :widths: 10 90 :header-rows: 1 :stub-columns: 0 Value, Meaning 0 또는 cmsDIR_N, (-) 방향 => Negative direction 1 또는 cmsDIR_P, (+) 방향 => Positive direction RETURN VALUE ````````````` +------------+-----------+ | Value | Meaning | +============+===========+ | 음수 | 수행 실패 | +------------+-----------+ | ERR_NONE | 수행 성공 | +------------+-----------+ EXAMPLE ````````` - 본 예제는 cmsSxMoveToStart 를 사용하여 X 축을 절대좌표 1000 지점으로 이동한 후 다시 절대좌표 0 지점으로 이동하는 예입니다. .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ : /*************************************************************** 다음의 예제는 “Jog 이동”을 하는 예입니다. 본 예제에서의 “Jog 이동”은 버튼이 눌려진 상태에서는 Axis0 축의 이동을 수행하다가, 버튼이 풀리면 이동을 멈추는 예입니다. **************************************************************/ #define DEV0 0 #include "ComiSSCNET3_SDK.h" #include "ComiSSCNET3_SDK_Def.h" /*************************************************************** * onprograminitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이 * 적용되는 부분을 의미합니다. ***************************************************************/ void OnProgramInitial() { long m_nNumDevices; long m_DeviceList[16]; long m_nNumAxes; cmsLoadDll(); if(cmsGnLoadDevice(&m_nNumDevices, m_DeviceList, &m_nNumAxes) != ERR_NONE) { //Handle 은 사용자가 생성한 폼의 핸들 값입니다. // 에러메시지 출력 return; } } /************************************************************** * OnSetSpeed(): 이 함수는 속도설정의 변경이 필요할 때 호출되는 가상의 함수입니다. * 이때 m_fVwork, m_fAcc, m_fDec 변수를 통하여 속도, 가속도, 감속도 값이 * 적절하게 전달된다고 가정합니다. **************************************************************/ void OnSetSpeed() { //첫 번째 축(Axis)의 기본 속도를 설정 합니다. cmsCfgSetSpeedPattern(DEV0, 0, cmsSMODE_S, m_fVwork, m_fAcc, m_fDec, 0,0); } /************************************************************** * OnPlusButtonDown() : (+)Move 버튼이 눌렸을 때 호출되는 가상의 함수 * 이 함수에서 (+)방향으로 V-Move 를 시작합니다. **************************************************************/ void OnPlusButtonDown () { cmsSxVMoveStart(DEV0, 0, cmsDIR_P);//Positive dir V-MOVE } /************************************************************** * OnPlusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수 * 이 함수에서는 V-Move 를 종료합니다. **************************************************************/ void OnPlusButtonUp () { cmsSxStop(DEV0, 0, cmsFALSE, cmsFALSE); } /************************************************************** * OnMinusButtonDown(): (-)Move 버튼이 눌렸을 때 호출되는 가상의 함수 * 이 함수에서 (+)방향으로 V-Move 를 시작합니다. **************************************************************/ void OnMinusButtonDown() { cmsSxVMoveStart(DEV0, 0, cmsDIR_N); // Negative dir V-MOVE } /************************************************************** * OnMinusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수 * 이 함수에서는 V-Move 를 종료합니다. **************************************************************/ void OnMinusButtonUp() { cmsSxStop(DEV0, 0, cmsFALSE, cmsFALSE); } ----------------------------------------------------------------------- Visual Basic ‘============================================================ ‘GnLoadDevice 함수로 장치를 초기화 합니다. ‘============================================================ Const DEV0 = 0 Private Sub Form_Load() Dim nTotalDevices As Long Dim DeviceList(16) As Long Dim nTotalAxis As Long Dim IRetVal As Long Dim Hwnd As Long '============================================================ ' GnLoadDevice 함수로 장치를 초기화합니다. IRetVal = GnLoadDevice(nTotalDevices, DeviceList(0), nTotalAxis) If IRetVal <> ERR_NONE Then MsgBox ("GnLoadDevice has been failed") End If '============================================================ End Sub Private Sub CfgSpeed(nTotalAxis As Long) ‘========================================================== ‘ 이 함수에서 CfgSetSpeedPattern 함수로 속도를 설정하는 것은 ‘ 모든 모션의 기준속도(Standard Speed) 가 됩니다. ‘ 단축 구동을 비롯한 대부분의 모션 동작은 이 기준 속도의 비율로 동작되게 ‘ 됩니다. ‘ 아래 함수는 전체 축에 대해서 임의의 기준 속도를 설정하고 있습니다. ‘========================================================== Call CfgSetSpeedPattern(DEV0, 0, cmsSMODE_S, 1000, 2000, 2000,0,0) End Sub Private Sub btnStart_Click() ' 지정된 방향으로 연속적 속도 이동을 시작합니다. 이 이동은 ‘ 속도 이동이기 때문에, 정지(停止) 함수가 호출될때까지 계속 이송합니다. Call SxVMoveStart(DEV0, 0, cmsDIR_N) End Sub ----------------------------------------------------------------------- Delphi // * 이 함수는 폼이 생성될때 이벤트에 의해 불려지며 , 장치를 로드하는 함수입 // * 니다. procedure OnCreate(); var g_nDevs : LongInt; DevList : Array[0..15] of LongInt g_nAxis : LongInt; begin // Load ComiSSCNET3(DLL) Library if ( cmsGnLoadDevice (@g_nDevs, @DevList, @g_nAxis) <> ERR_NONE ) then begin // 마지막에 발생한 에러를 화면에 표시합니다. // 함수 인자로는 Form 의 Handle 이 전달됩니다. // 에러메시지 출력 exit; end end; // * Description : 속도를 설정 하는 함수 procedure btnSetSpeedClick(); var fAccelSpeed : Double; fDecelSpeed : Double; fWorkSpeed : Double; nSMODE : LongInt; begin //각 변수들의 값을 설정 합니다. fWorkSpeed := 50000; fAccelSpeed := 100000; fDecelSpeed := 100000; nSMODE := cmsSMODE_S; // 설정된 기준 속도를 실제 SDK 함수에 전달합니다. cmsCfgSetSpeedPattern( 0, // 현재 설정된 디바이스 ID 를 선택합니다. 0, // 현재 활성화 되어 있는 채널을 선택합니다. nSMODE, // 가감속이 없는 모드와 선형 가감속, //S-CURVE 가감속을 설정합니다. fWorkSpeed, // 작업 속도를 설정합니다. fAccelSpeed, // 가속도를 설정합니다. fDecelSpeed, // 감속도를 설정합니다. 0, //초기속도를 설정합니다. 0) ; //최종속도를 설정합니다. end; // * Description : // * 이 함수는 버튼 이벤트에 의해 + 방향으로 설정된 거리만큼 [절대좌표]로 // * 이동하는 함수입니다. Procedure btnPositiveClick(); var begin ////////////////////////////////////////////////////////////// // 저희 COMIZOA 에서는 다음과 같은 형태의 함수를 제공합니다. // 지령 펄스 출력 후 바로 종료를 위한 함수 // 설명 : 위 함수는 지정된 지령 위치의 펄스 출력을 내보내고, // 함수가 반환됩니다. // 본 함수를 사용 했을 경우 사용자가 직접 위치 검출기를 통한 // 모션 종료를 판단할 수 있는 함수는 // cmsSxIsDone 혹은 cmsSxWaitDone 함수가 있습니다. // cmsSxMoveStart [상대좌표] // cmsSxMoveToStart [절대좌표] ////////////////////////////////////////////////////////////// cmsSxVMoveStart ( 0, 0, cmsDIR_N ); end; -----------------------------------------------------------------------